package main.java.aplicacion.usuarios.entidades;

import java.util.ArrayList;
import java.util.List;

import main.java.aplicacion.comentarios.entidades.Comentario;
import main.java.aplicacion.juegos.entidades.Juego;
import main.java.datatypes.comentarios.ComentarioVO;
import main.java.datatypes.juegos.JuegoVO;
import main.java.datatypes.usuarios.ClienteVO;
import main.java.datatypes.usuarios.UsuarioVO;

public class Cliente extends Usuario{

	private List<Juego> juegosAdquiridos = new ArrayList<Juego>();
	private List<Comentario> comentariosRealizados = new ArrayList<Comentario>();

	public Cliente(ClienteVO dtCliente) {
		super((UsuarioVO) dtCliente);
		this.juegosAdquiridos = toJuegos(dtCliente.getJuegosAdquiridos());
		this.comentariosRealizados = toComentarios(dtCliente
				.getComentariosRealizados());
	}

	public Cliente(UsuarioVO dtUsusario) {
		super(dtUsusario);
	}
	
	public ClienteVO toClienteVO(){
		ClienteVO dtUsuario = new ClienteVO(this.getNick(), this.getMail(), this.getNombre(), this.getApellido(), this.getFechaNacimiento(),this.getEdad(),this.getImagen(),this.getContrasena());
		List<JuegoVO> juegosComp = new ArrayList<JuegoVO>();
		for(Juego j : juegosAdquiridos){
			juegosComp.add(j.getJuegoVO());
		}
		dtUsuario.setJuegosAdquiridos(juegosComp);
		return dtUsuario;
	}
	
	public UsuarioVO toUsuarioVO(){
		UsuarioVO dtUsuario = new ClienteVO(this.getNick(), this.getMail(), this.getNombre(), this.getApellido(), this.getFechaNacimiento(),this.getEdad(),this.getImagen());
		return dtUsuario;
	}
	

	private List<Juego> toJuegos(List<JuegoVO> dtjuegos) {
		List<Juego> juegos = new ArrayList<Juego>();
		for (JuegoVO dtjuego : dtjuegos) {
			Juego juego = new Juego(dtjuego);
			juegos.add(juego);
		}
		return juegos;
	}

	private List<Comentario> toComentarios(List<ComentarioVO> dtComentarios) {
		List<Comentario> comentarios = new ArrayList<Comentario>();
		for (ComentarioVO dtComentario : dtComentarios) {
			Comentario comentario = new Comentario(dtComentario);
			comentarios.add(comentario);
		}
		return comentarios;
	}

	public List<Juego> getJuegosAdquiridos() {
		return juegosAdquiridos;
	}

	public void setJuegosAdquiridos(List<Juego> juegosAdquiridos) {
		this.juegosAdquiridos = juegosAdquiridos;
	}

	public List<Comentario> getComentariosRealizados() {
		return comentariosRealizados;
	}

	public void setComentariosRealizados(List<Comentario> comentariosRealizados) {
		this.comentariosRealizados = comentariosRealizados;
	}

	public void registrarCompra(Juego j) {
		this.juegosAdquiridos.add(j);
	}
	
}
